package dac;

public class HanoiTower {
    public static void main(String[] args) {
        hanoiTower(5,'A','B','C');
    }

    /**
     * 汉诺塔
     * @param num：汉诺塔中盘子的个数
     * @param a:A塔
     * @param b:B塔
     * @param c:C塔
     */
    public static void hanoiTower(int num,char a,char b,char c){
        //只有一个盘子时
        if(num == 1){
            System.out.println("第" + num + "个盘子 " + a + "->" + c);
        }else{
            //两个及以上盘子时
            //将最底层之上所有盘子看做一个整体，从a通过c移动到b
            hanoiTower(num - 1,a,c,b);
            //将最底层盘子从a移动到c
            System.out.println("第" + num + "个盘子 " + a + "->" + c);
            //将b塔的盘子通过a移动到c
            hanoiTower(num - 1,b,a,c);
        }
    }
}
